package controleur;

import beans.Equipe;
import beans.Etudiant;
import beans.Formateur;
import beans.Module;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

/**
 * Vérification des requêtes sur les formulaires de l'application AGP
 * @author Amanda & Rami
 */
public class Outils {

    /**
     * controlerFormulaireCreationProjet : Méthode du controleur permettant la vérification des données lors de la création d'un projet
     * @param nom Nom du projet
     * @param dateDebut Date de début du projet
     * @param dateFin Date de fin du projet
     * @param description Description du projet
     * @return notification d'erreur
     */
    public static String controlerFormulaireCreationProjet(String nom, String dateDebut, String dateFin, String description) {
        StringBuffer resultat = new StringBuffer("");
        java.sql.Date d1 = null;
        java.sql.Date d2 = null;

        if (nom.equals("")) {
            resultat.append("Merci de renseigner le nom du projet.<br/>");
        }
        if (description.equals("")) {
            resultat.append("Merci de renseigner le descriptif.<br/>");
        }

        if(dateDebut.equals("")){
            resultat.append("Merci de renseigner une date de debut.<br/>");
            }else{
             try {
            d1 = java.sql.Date.valueOf(dateDebut);
        } catch (Exception e) {
            resultat.append("La date de d&eacute;but (" + dateDebut + ") n'est pas valide.<br/>");
        }
            }
        if(dateFin.equals("")){
             resultat.append("Merci de renseigner une date de fin.<br/>");
          }else {
            try {
            d2 = java.sql.Date.valueOf(dateFin);
        } catch (Exception e) {
            resultat.append("La date de fin (" + dateFin + ") n'est pas valide.<br/>");
        }
          }

        
        
        if (d1 != null && d2 != null) {
            if (d2.before(d1)) {
                resultat.append("La date de fin (" + dateFin + ") est ant&eacute;rieure &agrave; la date de d&eacute;but (" + dateDebut + ").<br/>");
            }
        }
        return resultat.toString();
    }

    /**
     * controlerListesSelectionnees : Méthode du controleur permettant la vérification des listes
     * @param listeModules Liste des modules
     * @param listeFormateurs Liste des formateurs
     * @param listeEquipes Liste des équipes
     * @return notification d'erreur
     */
    public static String controlerListesSelectionnees(ArrayList<Module> listeModules, ArrayList<Formateur> listeFormateurs, ArrayList<Equipe> listeEquipes) {
        StringBuffer resultat = new StringBuffer("");
        HashSet<Module> hsetModules = new HashSet<Module>(listeModules);
        HashSet<Formateur> hsetFormateurs = new HashSet<Formateur>(listeFormateurs);
        if (hsetModules.size() < listeModules.size()) {
            resultat.append("Il y a au moins un doublon au niveau des mati&egrave;res.<br/>");
        }
        if (hsetFormateurs.size() < listeFormateurs.size()) {
            resultat.append("Il y a au moins un doublon au niveau des formateurs.<br/>");
        }
        for (int i = 0; i < listeEquipes.size(); i++) {
            HashSet<Etudiant> hsetEtudiant = new HashSet<Etudiant>((listeEquipes.get(i)).getEtudiants());
            if (hsetEtudiant.size() < listeEquipes.get(i).getEtudiants().size()) {
                resultat.append("Il y a un doublon au niveau de l'equipe numéro " + (i + 1) + ".<br/>");
            }
        }
        return resultat.toString();
    }

    public static String controlerFormulaireModifer(String nom, String dateDebut, String dateFin, String description ,ArrayList<Module> listeModules, ArrayList<Formateur> listeFormateurs, ArrayList<Equipe> listeEquipes){
        StringBuffer resultat = new StringBuffer("");
        resultat.append(controlerFormulaireCreationProjet(nom, dateDebut, dateFin, description));
        resultat.append(controlerListesSelectionnees(listeModules, listeFormateurs, listeEquipes));
        return resultat.toString();

    }

}
